﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AutoplanetaTaskManager.Daos;
using AutoplanetaTaskManager.Daos.EntityFramework;
using AutoplanetaTaskManager.Models;

namespace AutoplanetaTaskManager.Views.Admin
{
    public partial class EditEmployeeForm : Form
    {
        private readonly IUserDao _userDao = new UserDao();
        private readonly IRoleDao _roleDao = new RoleDao();
        private User _user;

        public EditEmployeeForm(int userId)
        {
            InitializeComponent();

            _user = _userDao.Get(userId);
            if (_roleDao.Get(_user.RoleId).Name != "USER")
                _user = null;
        }

        private void EditEmployeeForm_Load(object sender, EventArgs e)
        {
            if (_user != null)
            {
                firstNameTextBox.Text = _user.FirstName;
                lastNameTextBox.Text = _user.LastName;
                userNameTextBox.Text = _user.UserName;
                passwordTextBox.Text = _user.Password;
            }
            else
            {
                MessageBox.Show("Вы не можете редактировать данную запись", "Ошибка!");
                Dispose();
            }
        }

        private void cancelButton_Click(object sender, EventArgs e)
        {
            Dispose();
        }

        private void editButton_Click(object sender, EventArgs e)
        {
            if (passwordTextBox.Text.Length > 0 && passwordTextBox.Text.Length <= 3)
                MessageBox.Show("Пароль должен быть длиннее", "Недопустимые значения!");
            else if (
                string.IsNullOrEmpty(firstNameTextBox.Text) ||
                string.IsNullOrEmpty(lastNameTextBox.Text) ||
                string.IsNullOrEmpty(userNameTextBox.Text) ||
                string.IsNullOrEmpty(passwordTextBox.Text))
                MessageBox.Show("Вы должны заполнить все необходимые поля", "Недопустимые значения!");
            else
            {
                _userDao.Update(
                    new User
                    {
                        Id = _user.Id, 
                        FirstName = firstNameTextBox.Text,
                        LastName = lastNameTextBox.Text,
                        UserName = userNameTextBox.Text,
                        Password = passwordTextBox.Text
                    });
                Dispose();
            }
        }
    }
}
